package o2o.service.delivery.to;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author Jahnke【1029777564@qq.com】
 * @ClassName DeliveryOrderInfo
 * @Description:
 * @date 2019/12/25 16:45
 * @Version 1.0
 */
@Data
@Accessors(chain = true)
public class DeliveryOrderTO {

    public final static String Order_STATUS_WAIT_ACCETP = "wait_accept";    // 待接单
    public final static String Order_STATUS_WAIT_FETCH = "wait_fetch";      // 待取货  已接单
    public final static String Order_STATUS_ARRIVE_SHOP = "arrive_shop";    // 到店
    public final static String Order_STATUS_DELIVERING = "delivering";      // 配送中
    public final static String Order_STATUS_DONE = "done";                  // 已完成
    public final static String Order_STATUS_CANCEL = "cancel";              // 已取消

    public final static String Order_STATUS_OUT_TIME = "out_time";          // 已过期
    public final static String Order_STATUS_EXCEPTION = "exception";        // 配送异常

    public static Map<String, String> orderStatusMap = new ConcurrentHashMap<>();

    static {
        orderStatusMap.put("wait_accept", "待接单");
        orderStatusMap.put("arrive_shop", "到店");
        orderStatusMap.put("wait_fetch", "待取货");
        orderStatusMap.put("delivering", "配送中");
        orderStatusMap.put("done", "已完成");
        orderStatusMap.put("cancel", "已取消");
        orderStatusMap.put("out_time", "已过期");
        orderStatusMap.put("exception", "配送异常");
    }

    private String sysCustomer;     // 客户标识
    private String orderNo;         // 订单号

    private String plateform;       // 配送平台
    private String deliveryNo;      // 配送订单号
    private String goodsType;       // 配送类型
    private String shopId;          // 店铺id
    private String username;        // 配送单用户
    private Double orderPrice;      // 配送单基恩
    private Integer prepayState;    // 是否需要垫付 1:是 0:否 (垫付订单金额，非运费)
    // 寄件地址
    private String fromAddress;
    private String fromAddressDetail;
    private String fromMobile;
    private String fromSenderName;
    private Double fromLatitude;
    private Double fromLongitude;

    private String buyerName;       // 收货人姓名
    private String buyerPhone;      // 收货人联系方式
    private String buyerAddr;       // 收货人地址
    private Double buyerLat;        // 收货人经纬度
    private Double buyerLng;
    private String prov;
    private String city;            // 配送单城市
    private String county;
    private String callBack;        // 回调接口
    private String info;            // 备注信息

    private Double distance;        // 配送距离(单位：米)
    private Double fee;             // 实际运费(单位：元)，运费减去优惠券费用
    private Double deliverFee;      // 运费(单位：元)

    private String orderStatus;     // 订单状态  wait_accept:待接单 arrive_shop:到店  wait_fetch:待取货  delivering:配送中  done:已完成   cancle:已取消   over_time:已过期  exception:配送异常
    private String cancelReason;    // 取消原因
    private String cancelFrom;      // 订单取消原因来源(1:达达配送员取消；2:商家主动取消；3:系统或客服取消；0:默认值)

    private String deliveryName;    // 配送员姓名
    private String deliveryPhone;   // 配送员联系方式
    private Double currDeliveLat;   // 配送员最近一次的显示位置
    private Double currDeliveLng;

    private String placeTime;       // 下发配送单的时间
    private String acceptTime;      // 接单时间
    private String fetchTime;       // 取单时间
    private String finishTime;      // 完成时间
    private String cancelTime;      // 取消时间
    private String orderFinishCode; // 收获码
    private Double deductFee;       // 违约金

    private  Double payMoney;       // 支付金额
    private Double totalMoney;      // 总金额

    private Date createTim;         // 创建时间
}
